package com.errorfinding.common.jsoup;

import cn.hutool.json.JSON;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ParseProvinceName {


    /**
     * @author zw
     * @description DNF(地下城与勇士)金币价格
     * @date 2021/11/15 10:06
     */
    public static void parseDnfGoldCoins(List<Map<String,Object>> list, String url) throws IOException {

        /**
         * 获取页面文档数据
         */
        Document doc = Jsoup.connect(url).get();
        /**
         * 获取页面上 class属性为 pdlistbox 的标签
         */
        Elements elements = doc.getElementsByClass("pdlistbox");
        /**
         * 拿到第一个 class属性为 pdlistbox 的标签
         */
        Element element = elements.get(0);
        /**
         * 所有子标签
         */
        Elements children = element.children();

        /**
         * 当前页面的URL
         */
        String baseUri = element.baseUri();
        for (Element element1: children) {

            Elements sinPdlbox = element1.getElementsByClass("sin_pdlbox");

            for (Element element2:sinPdlbox) {

                //获取 标签里class属性为 sin_pdlbox 下的 所有ul子标签
                Elements ul = element2.getElementsByTag("ul");
                // 获取 第一个 ul标签
                Element element3 = ul.get(0);
                // 获取 第一个ul标签 下的子标签
                Elements children1 = element3.children();
                // 获取 第三个子标签
                Element element4 = children1.get(3);
                //获取当前标签的 text文本内容
                String text = element4.text();


                //获取 第四个 ul标签
                Element element5 = ul.get(3);
                //获取 第四个ul标签下的所有 li 子标签
                Elements li = element5.getElementsByTag("li");
                //获取 第一个 li 标签
                Element element6 = li.get(0);
                //获取 第一个 li 标签下的b标签
                Elements b = element6.getElementsByTag("b");
                //获取 b标签里的 text文本内容
                String text1 = b.text();

                Map<String,Object> map = new HashMap<>();
                map.put("address",text);
                map.put("proportion",text1+"万金币");
                list.add(map);

            }
        }

    }


    /**
     * @author zw
     * @description 解析省份
     * @date 2021/11/13 19:24
     */
    public static void parseProvinceName(Map<String, Map<String, String>> map, String url) throws IOException {

        /**
         * 获取页面文档数据
         */
        Document doc = Jsoup.connect(url).get();

        /**
         * 获取页面上所有的tbody标签
         */
        Elements elements = doc.getElementsByTag("tbody");

        /**
         * 拿到第五个tbody标签
         */
        Element element = elements.get(4);

        /**
         * 拿到tbody标签下所有的子标签
         */
        Elements childrens = element.children();

        /**
         * 当前页面的URL
         */
        String baseUri = element.baseUri();

        for (Element element1 : childrens) {

            Elements provincetrs = element1.getElementsByClass("provincetr");

            for (Element provincetr : provincetrs) {

                Elements tds = provincetr.getElementsByTag("td");
                for (Element td : tds) {

                    String provinceName = td.getElementsByTag("a").text();
                    String href = td.getElementsByTag("a").attr("href");

                    System.out.println(provinceName + "    " + baseUri + "/" + href);

                    map.put(provinceName, null);
                    /**
                     * 组装城市页面的URL，进入城市页面爬城市名称
                     */
                    parseCityName(map, baseUri + "/" + href, provinceName);
                }
            }
        }
    }


    /**
     * @author zw
     * @description 解析城市名称
     * @date 2021/11/13 19:26
     */
    public static void parseCityName(Map<String, Map<String, String>> map, String url, String provinceName) throws IOException {

        Document doc = Jsoup.connect(url).get();
        Elements elements = doc.getElementsByTag("tbody");
        Element element = elements.get(4);
        Elements childrens = element.children();

        /**
         *
         */
        String baseUri = element.baseUri();
        Map<String, String> cityMap = new HashMap<>();

        for (Element element1 : childrens) {

            Elements citytrs = element1.getElementsByClass("citytr");

            for (Element cityTag : citytrs) {
                Elements tds = cityTag.getElementsByTag("td");

                /**
                 * 直辖市，城市名就是本身
                 */
                String cityName = tds.get(1).getElementsByTag("a").text();

                if (cityName.equals("市辖区")) {
                    cityName = provinceName;
                }
                String href1 = tds.get(1).getElementsByTag("a").attr("href");

                System.out.println(cityName + " " + href1);

                cityMap.put(cityName, href1);
            }
        }
        map.put(provinceName, cityMap);
    }




}
